One type of software application uses a number of "windows", that is, sections of a display screen, to present a user with various operations he can perform. Typically, in each window a user can initiate one or more operations by means of, for example, a single menu option or a group of menu options, and each operation is represented by an object. Each window, therefore, is associated with or contains a number of objects which the user can activate in some way to initiate execution of the various operations. For example, the user can activate an object, to initiate execution, by clicking on it with a mouse, or by entering a command (keystrokes) in a text field associated with the object.
Within such an application, it is desirable to make the application user friendly. One way to do this is to alert the user to operations that the application will or will not allow at a given point. For example, if the user activates one object/operation the activation can preclude or enable the option of activating another object/operation. To alert the user to the object interaction taking place, it is known for the application to "gray" the affected object, e.g., lighten its display on the screen, to indicate that its associated operation is unavailable. Conversely, the activation of one object may enable other objects in the window. For example, the activation of an object may cause the application to generate another window (a child window) containing more objects/operations from which to choose.
Previously, the conditions and actions necessary to accomplish these and other object interactions were coded in separate procedures for each instantiation or actual occurrence of each object in the system. These procedures were typically duplicative and error prone.